package com.dji.sample.common.model;

import com.dji.sdk.common.PaginationData;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.domain.Page;

import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageResult<T> {
    private List<T> list;       // 当前页数据
    private int currentPage;    // 当前页码（0开始）
    private int pageSize;       // 每页大小
    private long totalCount;    // 总记录数
    private int totalPage;      // 总页数

    public static <T> PageResult<T> of(Page<T> page) {
        PageResult<T> result = new PageResult<>();
        result.setList(page.getContent());
        result.setCurrentPage(page.getNumber());
        result.setPageSize(page.getSize());
        result.setTotalCount(page.getTotalElements());
        result.setTotalPage(page.getTotalPages());
        return result;
    }

    public static <T> PageResult<T> of(PaginationData<T> paginationData) {
        PageResult<T> result = new PageResult<>();
        result.setList(paginationData.getList());
        result.setCurrentPage((int)paginationData.getPagination().getPage());
        result.setPageSize((int) paginationData.getPagination().getPageSize());
        result.setTotalCount(paginationData.getPagination().getTotal());
        result.setTotalPage((int) Math.ceil((double) paginationData.getPagination().getTotal()/ paginationData.getPagination().getPageSize()));
        return result;
    }
}